feat(subagents): support explicit capability inheritance - #1243
feat(subagents): support explicit capability inheritance#1243aatosolavi wants to merge 7 commits into
Conversation
|
@aatosolavi is attempting to deploy a commit to the Vercel Team on Vercel. A member of the Team first needs to authorize it. |
CI status noteGitHub Actions for this PR are currently A maintainer needs to click Approve and run on those workflows so the full suite can execute. Local verification already passed:
|
fa1a724 to
b5a99d8
Compare
CONTRIBUTING.md compliance audit
Action needed for Verified commits (CONTRIBUTING “Signed commits”):
GitHub Actions still need a maintainer Approve and run for first-time external contributors. |
3d34d45 to
559590b
Compare
|
Thanks for rebasing and carrying this forward. Since #1243 is based substantially on the original implementation in #639, would you mind adding the following co-author trailer to the implementation commit and preserving it if this is squash-merged? |
Allow declared subagents to opt into sharing the parent's live sandbox and connection definitions via `inherit.sandbox` / `inherit.connections`, while keeping isolation as the default and retaining distinct instructions. Rebases and lands the approach from vercel#639 on current main, including runtime shared-sandbox propagation, compiler validation, docs/info surface, tests, and extension-capability epoch bumps for transitive public types. Refs vercel#626. Co-authored-by: iroiro147 <265728356+iroiro147@users.noreply.github.com> Signed-off-by: Aatos Akvilander <aatos@akvilander.com>
0a93b0b to
ab406b4
Compare
|
@iroiro147 Done — the implementation commit now includes: Please keep this trailer if the PR is squash-merged so the original implementation attribution is preserved. Thanks for the original work on #639. |
|
Thanks, Aatos — confirmed the co-author trailer is present on ab406b4. I really appreciate you preserving the attribution and carrying the implementation forward! |
Keep process-lifetime init tracking so sequential inheriting children do not re-run onSession after the first open completes. Hard-fail unknown sandbox node ids, attach effectiveSandbox only when sharing, collapse shared-sandbox adapter assembly, prefer initialized backfill, share capability projection, and reject connection name collisions at compile. Co-authored-by: iroiro147 <265728356+iroiro147@users.noreply.github.com> Signed-off-by: Aatos Akvilander <aatos@akvilander.com>
Treat inheritedSandbox.sessionId as the immediate parent (parentSessionId), not the sandbox owner, so mid-chain inherit.sandbox parents accept and forward captures. Also align empty-string identity handling, preserve reattach metadata when merging backfills, document completed-set growth, and cover nested connection collisions plus open/init split. Co-authored-by: iroiro147 <265728356+iroiro147@users.noreply.github.com> Signed-off-by: Aatos Akvilander <aatos@akvilander.com>
…-capabilities-626 Signed-off-by: Aatos Akvilander <aatos@akvilander.com> # Conflicts: # packages/eve/extension-contracts/compatibility/dynamicInstructions/v1.ts # packages/eve/extension-contracts/compatibility/dynamicSkill/v1.ts # packages/eve/extension-contracts/compatibility/dynamicTool/v4.ts # packages/eve/extension-contracts/compatibility/hook/v2.ts # packages/eve/extension-contracts/reports/dynamicInstructions/v2.json # packages/eve/extension-contracts/reports/dynamicSkill/v2.json # packages/eve/extension-contracts/reports/dynamicTool/v5.json # packages/eve/extension-contracts/reports/hook/v3.json # packages/eve/src/compiler/extension-compatibility.ts
Merge origin/main and re-bump transitive extension capability epochs that this PR's public surface changes (tool, dynamicTool, hook, dynamicSkill, dynamicInstructions), retaining prior epochs with fixtures. Co-authored-by: iroiro147 <265728356+iroiro147@users.noreply.github.com> Signed-off-by: Aatos Akvilander <aatos@akvilander.com>
…-capabilities-626 Signed-off-by: Aatos Akvilander <aatos@akvilander.com> # Conflicts: # packages/eve/src/compiler/normalize-agent-config.test.ts # packages/eve/src/compiler/normalize-manifest.test.ts # packages/eve/src/compiler/normalize-manifest.ts # packages/eve/src/compiler/normalize-subagent.ts # packages/eve/src/execution/delegated-parent-notification.ts # packages/eve/src/execution/dispatch-runtime-actions-step.ts # packages/eve/src/execution/workflow-steps.test.ts # packages/eve/src/runtime/resolve-agent-graph.ts # packages/eve/src/runtime/types.ts
Summary
Allow declared subagents to opt into selected parent capabilities while keeping isolation by default:
inherit.sandbox: trueshares the parent's live sandbox session (not a seed copy)inherit.connections: truereuses the parent's resolved connection definitions (normal auth resolution; no credential copying)inherit, own sandbox +inherit.sandbox)eve info/ agent-info surface effective owned vs inherited capabilitiesThis rebases and completes the approach from #639 onto current
mainso CI can run on an up-to-date branch.Closes #626.
Related: #639 (original implementation by @iroiro147).
Example
Tests
pnpm --filter eve typecheckvitest.unit.config.ts): 177 passedpnpm docs:checkpnpm guard:invariantspnpm fmt/pnpm lintNotes for reviewers
agentcontract.